package bootstrap

import (
	"github.com/gin-gonic/gin"
	"go_api/app/http/middlewares"
	"go_api/routes"
	"net/http"
	"strings"
)

// SetupRoute 初始化路由
func SetupRoute(router *gin.Engine) {

	// 注册全局中间件
	registerGlobalMiddleWare(router)

	// 注册 Api 路由
	routes.RegisterApiRoutes(router)

	// 配置 404 路由
	setup404Handler(router)

}

// 注册全局中间件
func registerGlobalMiddleWare(router *gin.Engine) {
	router.Use(
		middlewares.Logger(),
		middlewares.Recovery(),
	)
}

func setup404Handler(router *gin.Engine) {
	// 处理 404 请求
	router.NoRoute(func(context *gin.Context) {
		// 获取标头的 Accept信息
		acceptString := context.Request.Header.Get("Accept")

		// strings.Contains判断字符串acceptString中是否包含text/html
		if strings.Contains(acceptString, "text/html") {
			// 如果是html的话
			context.String(http.StatusNotFound, "页面不存在")
		} else {
			// 返回json
			context.JSON(http.StatusNotFound, gin.H{
				"code":    "404",
				"message": "路由不存在",
			})
		}

	})
}
